#函数参数的补充
#查看某个值在内存中的地址
# v='小峰'
# print(id(v))
import copy


#函数传参的时候，传的是内存地址
# def func(data):
#     print(data,id(data))
# v='小峰'
# print(id(v))
# func(v)

#对于可变类型且函数中修改元素的内容，所有的地方都会修改。可变类型：列表、字典、集合。
# def fun1(data):
#     data.insert(2,0)
#     print(id(data))
# v1=[1,2,3,4] #列表
# fun1(v1)
# print(v1,id(v1))
#
# def fun2(data):
#     data.add(8)
#     print(id(data))
# v2={1,2,3,4}#集合
# fun2(v2)
# print(v2,id(v2))
#
# def fun3(data):
#     data.update({"k4": 8})
#     print(id(data))
# v3={"k1":1,"k2":2,"k3":3} #字典类型
# fun3(v3)
# print(v3,id(v3))


#重新拷贝
# def fun(data):
#     print(data,id(data))
# v=[1,2,3,4,5]
# print(v,id(v))
# new_v=copy.deepcopy(v)
# fun(new_v)
# print(new_v,id(new_v))

#函数的返回值是地址值
# def fun(data):
#      data+=2
#      return data
# v=1
# print(id(v))
# print(id(fun(v)))

#参数的默认值
# def fun(a,b=1):
#     print(a,b)
# fun(1,3)

# 在函数内存中会维护一块区域存储
# def fun(a,b=[1,4,8]):
#     b.append(100)
#     print(a,b)
#     print(id(a),id(b))
# fun(1)
# fun(2)
# fun(3,[1,2,3,4,5])
#
# 输出结果
# 1 [1, 4, 8, 100]
# 1555535456560 1555542237248
# 2 [1, 4, 8, 100, 100]
# 1555535456592 1555542237248
# 3 [1, 2, 3, 4, 5, 100]
# 1555535456624 1555542227200
#
